package com.mutual.reins.utils;

import com.mutual.reins.utils.constraint.ReinsConst;

/**
 * 本类负责所有与险种、险类校验相关的方法
 * @author panchen
 * @DATE 2021-04-19
 */
public class ReinsCompareRiskUtils {

    /**
     * 判断险种是否是属于某一险类b
     * @param classCode 需校验的险类
     * @param classType 常量
     * @return 校验结果
     * @throws IllegalAccessException 抛异常
     */
    public static boolean compareClassToClass(String classCode, String classType)
            throws IllegalAccessException {
        try {
            if (classType != null && !"".equals(classType)) {
                String[] codeClassTemp = classType.split(",");
                if (codeClassTemp.length >= 1) {
                    for (String code : codeClassTemp) {
                        if (classCode.equals(code)) {
                            return true;
                        }
                    }
                } else {
                    throw new IllegalAccessException(classType
                            + "对应的险类代码数据异常，请联系管理员查看配置信息");
                }
            } else {
                throw new IllegalAccessException("未查询到" + classType
                        + "对应的险类代码，请联系管理员");
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new IllegalAccessException("未查询到" + classType
                    + "对应的险类代码，请联系管理员");
        }
        return false;
    }

    /**
     * 判断险种是否是属于某一险类b author：LJ date:20141023
     *
     * @throws IllegalAccessException
     */
    public static boolean compareRiskToClass(String riskCode, String classType)
            throws IllegalAccessException {
        String classCode = riskCode.substring(0, 2);
        try {
            if (classType != null && !"".equals(classType)) {
                String[] codeClass = classType.split(",");
                if (codeClass.length >= 1) {
                    for (String code : codeClass) {
                        if (classCode.equals(code)) {
                            return true;
                        }
                    }
                } else {
                    throw new IllegalAccessException(classType
                            + "对应的险类代码数据异常，请联系管理员查看配置信息");
                }
            } else {
                throw new IllegalAccessException("未查询到" + classType
                        + "对应的险类代码，请联系管理员");
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new IllegalAccessException("未查询到" + classType + "对应的险类代码，请联系管理员");
        }
        return false;
    }

    /**
     * 比较险种代码判断
     *
     * @param riskCode
     * @param classType
     * @return
     * @throws IllegalAccessException
     */
    public static boolean compareRiskToRisk(String riskCode, String classType)
            throws IllegalAccessException {
        try {
            if (classType != null && !"".equals(classType)) {
                String[] codeRisk = classType.split(",");
                if (codeRisk.length >= 1) {
                    for (String code : codeRisk) {
                        if (riskCode.equals(code)) {
                            return true;
                        }
                    }
                } else {
                    throw new IllegalAccessException(classType
                            + "对应的险种代码数据异常，请联系管理员查看配置信息");
                }
            } else {
                throw new IllegalAccessException("未查询到" + classType
                        + "对应的险种代码，请联系管理员");
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new IllegalAccessException("未查询到" + classType
                    + "对应的险种代码，请联系管理员");
        }
        return false;
    }

    /**
     * 判断是否是PML险种 author LJ
     *
     * @param code 可以是险种也可以是险类
     * @return 是否是PML险种
     * @throws IllegalAccessException 抛异常信息
     */
    public static boolean isPmlTrialClass(String code)
            throws IllegalAccessException {
        boolean isPml = false;
        try {
            String pmlClassCode =  ReinsConst.PML_CLASS;
            String[] classCodeArray = pmlClassCode.split(",");
            if (classCodeArray.length >= 1) {
                for (String classCodePml : classCodeArray) {
                    if (classCodePml.equals(code)) {
                        isPml = true;
                        return isPml;
                    }
                }
            } else {
                throw new IllegalAccessException(
                        "PML险类配置数据情况异常！请联系管理员检查配置信息");
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new IllegalAccessException("未找到PML险类配置！请联系管理员");
        }
        return isPml;
    }




}
